As the data volume processed by a computer becomes increasingly larger, computer peripherals demand a much wider transmission bandwidth. Although various bus architectures are available, yet they still have the drawbacks of low transmission rate and high cost. Unlike traditional buses, the Universal Serial Bus (USB) features the advantages of hot plug and high data transmission rate, and thus USB is used extensively in various computer systems.
The aforementioned USB transmission protocol defines four types of transmission modes: (1) interrupt transfers, (2) bulk transfers, (3) isochronous transfers, and (4) control transfers, wherein the main feature of the data transmission of the bulk transfers resides on that data is not generated periodically, a large volume of data occurs at a specific time only, and the data transmission requires a very broad bandwidth. The bulk transfers mode is suitable for USB mass storage devices such as printers and scanners.
FIG. 1 illustrates a software structure of a USB storage device corresponding to a host system operating in bulk transfers mode. The software structure of the host system includes, sequentially from top to bottom, a USB host controller driver layer 11, a USB protocol driver layer 12, a bulk transfers layer 13, a small computer system interface (SCSI) layer 14, a block device processing layer 15, and a file system layer 16.
FIG. 2 illustrates a flow chart of a procedure of accessing data of a bulk transfers protocol at a host system. The processing procedure includes the steps of:
Step 20: receiving a SCSI request block (SRB) issued by a SCSI layer 14 from a bulk transfers layer 13;
Step 21: wrapping a command included in the SRB into a command block wrapper (CBW), and sending the CBW to a USB storage device through a USB bulk-out transaction;
Step 22: executing a data-out or data-in transmission; and
Step 23: receiving a command status wrapper (CSW) to confirm whether or not the access command is processed successfully for this time.
From the description above, one CBW is issued each time when the host system sends an access command; then after the data transmission is completed, a CSW is received to confirm whether or not the transmission is successful before the next data transmission can be performed. If the data reading speed of the storage medium is fast enough, and the data are ready upon each data request, then when performing reading/writing of a large amount of data, it becomes overly burdensome in terms of processing time to send out one CBW command and one CSW command for each packet, resulting in degradation of the overall data transmission rate of the USB system.